package netease.year2017;

import java.util.Scanner;

/**
 * Created by Hyman on 2017/3/17.
 *
 * 题目描述： 目前有一款益智小游戏，对经典的吃豆子游戏进行了改编。玩家将在类似如下图中所示的网格地图中进行游戏，当玩家将所有的“豆子”吃完后，游戏便结束。具体的游戏规则如下：
 * 1.玩家在游戏开始后，出生在地图的左上角，且面朝右侧。
 * 2.玩家每次只能移动一格，移动的方式只能从如下两种方式中选择一种：
 *   a.按玩家当前的朝向水平移动一格（如果玩家目前面朝右侧，则玩家向右移动一格；如果玩家目前面朝左侧，则玩家向左移动一格）。
     b.向下移动一格。但是每次向下移动后，玩家的朝向都会发生改变，如果玩家目前面朝右侧，向下移动一格后，将面朝左侧，反之亦然。
 * 3.当玩家移动到“有豆子”的地方，就会将豆子“吃掉”，“吃掉”的操作为游戏自动完成。
 * 4.当玩家将地图中所有豆子都“吃掉”后，游戏通关成功，并且将统计玩家移动所花的总步数，步数越少获得的积分越高。
 * 现在希望你为游戏编写一个“外挂”，当游戏地图加载后，自动规划计算出能让游戏通关且所花步数最少的方案；为了方便起见，只需要你输出步数。
 *
 * 输入：
 *  第一行将输入两个数n和m（1<=n, m<=150）用空格隔开，分别代表当前加载地图的行数和列数。接下来的n行均将输入m个字符，用于描述地图的内容。
 *  其中’E’代表该格内没有豆子，’W’代表有豆子。我们确保左上角的格子即出生点内没有豆子。
 * 输出：一个整数，使游戏通关的最少步数
 *
 * 样例输入：
 *  4 5
 *  EWEEW
 *  EEWEE
 *  EWEEE
 *  WEEEE
 *  样例输出：11
 */
public class EatBeans {

    public static void main(String[] args) {

        char e = 'e';
        char w = 'w';

        Scanner scanner = new Scanner(System.in);
        String firstLine = scanner.nextLine();

        String[] flArr = firstLine.split(" ");
        int n = Integer.parseInt(flArr[0]);
        int m = Integer.parseInt(flArr[1]);

        int[][] allArr = new int[n][2];

        for (int i=0; i<n; i++) {
            String line = scanner.nextLine();

            int f = line.indexOf(w);
            int l = line.lastIndexOf(w);

            allArr[i][0] = f;
            allArr[i][1] = l;
        }

        int step = 0;
        int curPos = 0;

        // 奇数行：左->右， 偶数行：右->左
        for (int j=0; j<n; j++) {
            if (j % 2 == 0) {

                if(curPos < allArr[j][0]) {
                    step += allArr[j][0] - curPos;
                    curPos = allArr[j][0];
                }

                if(curPos < allArr[j][1]) {
                    step += allArr[j][1] - curPos;
                    curPos = allArr[j][1];
                }

                if(j+1<n && curPos < allArr[j+1][1]) {
                    step += allArr[j+1][1] - curPos;
                    curPos = allArr[j+1][1];
                }
                if(j+1 < n) {
                    step++;
                }

            } else {

                if(curPos > allArr[j][1]) {
                    step += curPos - allArr[j][1];
                    curPos = allArr[j][1];
                }

                if(curPos > allArr[j][0]) {
                    step += curPos - allArr[j][0];
                    curPos = allArr[j][0];
                }

                if(j+1<n && curPos > allArr[j+1][0]) {
                    step += curPos - allArr[j+1][0];
                    curPos = allArr[j+1][0];
                }

                if(j+1 < n) {
                    step++;
                }
            }
        }

        System.out.println(step);

    }

}
